//
//  RootViewController.swift
//  上海微博
//
//  Created by co on 16/2/23.
//  Copyright © 2016年 王南侠. All rights reserved.
//

import UIKit
import HMRefresh

/// 根控制器 -其他住控制器的基类
class RootViewController: UIViewController {

    //MARK: - 公共属性

    /// 表格视图
    var tableView :UITableView?
    
    //刷新控件
    var refreshControl: HMRefreshControl?
    /// 访客视图 - 如果用户登录成功就不要创建访客视图
    var visitorView: VisitorView?
    
    
    // MARK: - 视图的生命周期
    //loadView 创建视图层次结构的
    override func loadView() {
        // 1.创建根视图
        view = UIView()
        
        //2.用户登录显示 tableView 否则显示访客视图
        UserAcount.shareUserAccount.isLogin ? setupTabview() :setupVisitorView()
    }
    

    //viewDidLoad 加载数据的
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 如果没有登录注册通知
        
        if UserAcount.shareUserAccount.isLogin{
            loadData()
        } else {
            NSNotificationCenter.defaultCenter().addObserver(
                self,
                selector: "loginSucessed",
                name: CZWeiBoLoginSuccessedNotification,
                object: nil)
        }
    }

    //加载数据 - 真正的数据加载应该放在子类中
    func loadData(){
    
    }
    
    
    /// 登录成功监听方法
   @objc private func loginSucessed (){
        view = nil 
    
        // 注销通知
        NSNotificationCenter.defaultCenter().removeObserver(self, name: CZWeiBoLoginSuccessedNotification, object: nil)
    }
}



// MARK: - VisitorViewDelegate
extension RootViewController:VisitorViewDelegate{
    
    func visitorViewDidLogin() {
        let outhVC = OAuthViewController()
        let nav = UINavigationController(rootViewController: outhVC)
        
        
        presentViewController(nav, animated: true, completion: nil)
    }
    
    func visitorViewDidRegister() {
//        let outhVC = OAuthViewController()
//        let nav = UINavigationController(rootViewController: outhVC)
//        
//        presentViewController(nav, animated: true, completion: nil)
        print("注册")
    }
}




// MARK: - 设置界面
extension RootViewController{
    
    ///设置访客视图
    private func setupVisitorView(){

        visitorView = VisitorView()
        view.addSubview(visitorView!)
        
        // 自动布局
        visitorView?.snp_makeConstraints(closure: { (make) -> Void in
            make.edges.equalTo(view)
            
        })
        
        // 设置代理
        visitorView?.delegate = self
        
        
        // 设置状态栏按钮 - 如果换行参数，一定要保证一个参数一行
        navigationItem.leftBarButtonItem = UIBarButtonItem(
            title: "注册",
            style: .Plain,
            target: self,
            action: "visitorViewDidRegister"
            )
        navigationItem.rightBarButtonItem = UIBarButtonItem(
            title: "登录",
            style: .Plain,
            target: self,
            action: "visitorViewDidLogin")
    }
    
    //设置表格视图
    private func setupTabview(){
        
        tableView = UITableView(frame: CGRectZero,style: .Plain)
        
        view.addSubview(tableView!)
        
        // 自动布局-让子视图和根视图一样大小
        tableView?.snp_makeConstraints { (make) -> Void in
            make.edges.equalTo(view)
            
        }
        
        //设置数据源
        tableView?.dataSource = self
        //设置代理
        tableView?.delegate = self
    }
    
    /// 设置刷新控件
    /// 需要刷新控件的控制器单独 调用 setupRefreshContrl()https://m.baidu.com/?code=ec172608bd415d372388d972f9b2bbf0&from=844b&vit=fps
    /// 私有函数不能被继承
     func setupRefreshContrl(){
        
        // 如果tableview 不存在直接返回
        guard let tableView = tableView else {
            return
        }
         // 默认没有刷新控件，但是如果刷新控件已经存在 不要走再次添加
        
        if refreshControl != nil{
            return
        }
        refreshControl = HMRefreshControl()
        tableView.addSubview(refreshControl!)
        
        /// 设置下拉刷新视图
        refreshControl?.pulldownView = CZpulldownRefreshView.refreshView()
        refreshControl?.normalPullupString = "下拉起飞"
        refreshControl?.pullingString = "放下开飞"
        refreshControl?.refreshingString = "正在起飞"
        refreshControl?.lastRefreshString = "末次"
        
        //设置刷新控件的监听方法
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        

    }
}


extension RootViewController:UITableViewDataSource,UITableViewDelegate{
    
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
}